const arr =[1,[2,[3,4]]] // [1,2,3,4]
console.log(arr.flat(Infinity));

//递归实现
function flatten(arr){
    let res=[]
    for(let i =0;i<arr.length;i++){
        if(Array.isArray(arr[i])){
            res = res.concat(flatten(arr[i]))
        }else{
            res.push(arr[i])
        }
    }
    return res
}
console.log(flatten(arr));

//只适用于纯数字
const flattened = arr.toString().split(',').map(Number);
console.log(flattened); 

//使用reduce递归实现
function flatten(arr) {
  return arr.reduce((acc, current) => {
    return acc.concat(Array.isArray(current) ? flatten(current) : current);
  }, []);
}

//使用some配合...arr解构加循环实现
function flatten(arr) {
  while (arr.some(item => Array.isArray(item))) {
    arr = [].concat(...arr);
  }
  return arr;
}
